package 构建模式;

import testJ.test1;

/**
 * 门面模式 为子系统中的一组接口提供一个一致的接口，Facade模式定义一个高层接口，这个接口使得这一子系统更加容易使用
 * 最典型的就是 mvc中的服务层，控制器层只要调用服务层就可以了，不需要去管理底层实现，升级时也可以只对底层升级，控制器层不用修改，这里要强调解耦
 */
public class 门面模式 {
    public static void main(test1[] args) {
        //只需要调用 daofacade 就可以对dao1,2,3的内容输出，注意解耦
        DaoFacade daoFacade = new DaoFacade();
        daoFacade.toDao();
    }
}
class DaoFacade{
    Dao1 dao1 = new Dao1();
    Dao2 dao2 = new Dao2();
    Dao3 dao3 = new Dao3();
    public void toDao(){
        dao1.toDao1();
        dao2.toDao1();
        dao3.toDao1();
    }
}
class Dao1{
    public void toDao1(){
        System.out.println("toDao1");
    }
}
class Dao2{
    public void toDao1(){
        System.out.println("toDao2");
    }
}
class Dao3{
    public void toDao1(){
        System.out.println("toDao3");
    }
}
